home *** CD-ROM | disk | FTP | other *** search
/ System Booster / System Booster.iso / Archives / Timing / TitleClock1001.lha / Titleclock1001 / TitleClock1001.s < prev   
Text File  |  1995-05-30  |  27KB  |  1,492 lines

  1. ;=============================================================================
  2. ;==                    Titleclock for Workbench                             ==
  3. ;==                © Henryk Richter "Buggs of DEFECT"                       ==
  4. ;==                     written on ASM-ONE 1.25                             ==
  5. ;==                            Freeware                                     ==
  6. ;=============================================================================
  7. ;
  8. ver    macro
  9.     dc.b    `1.08`
  10.     endm
  11. date    macro
  12.     dc.b    `30-May-95`
  13.     endm
  14. ;
  15. ;--------------------------- Asm-Tester ------------------------------
  16. test    =    0
  17. ;-------------------- für welche Systemversion ? ---------------------
  18. Kickversion    = 39            ;37,38,39
  19. ;------------------- diese Variablen so lassen -----------------------
  20. LockLayer    =    1        ;nur zum  Test ausmachen
  21. deutsch        =    0        ;obsolet
  22. ;-------------------- Angabe der Versionen  --------------------------
  23.     if    Kickversion=37
  24. locale        =    0        ;Kick 2.0, eingebaute Strings
  25. Use21        =    1
  26.     else
  27.     if    Kickversion=38
  28. locale        =    1        ;Kick2.1, wie 2.0, nur Locale
  29. Use21        =    1
  30.     else
  31. locale        =    1        ;Kick 3.x Locale on/Use21 off
  32. Use21        =    0
  33.     endc
  34.     endc
  35. ;---------------------------------------------------------------------
  36.     Incdir    include:
  37.     include    EXEC/Exec_lib.i
  38.     include libraries/Dos_lib.i
  39.     include dos/Dos.i
  40.     include dos/var.i
  41.     include    Intuition/Intuition_lib.i
  42.     include    utility/utility.i
  43.     include    utility/date.i
  44.     include    libraries/utility_lib.i
  45.     include    devices/timer.i
  46.     include    libraries/timer_lib.i
  47.     include    graphics/rastport.i
  48.     include    graphics/layers.i
  49.     include    graphics/graphics_Lib.i
  50.     include    intuition/screens.i
  51.     include    exec/interrupts.i
  52.     include    exec/tasks.i
  53.     include    exec/memory.i
  54.     include    libraries/commodities.i
  55.     include    libraries/commodities_lib.i
  56.     include    workbench/startup.i
  57.     include    libraries/icon_lib.i
  58.     include    libraries/locale_lib.i
  59.     include    libraries/locale.i
  60.     include    workbench/workbench.i
  61.  
  62. start
  63.     move.l    4.w,a6
  64.     link    a5,#-Dataslen
  65.     lea    -dataslen(a5),a5
  66.  
  67.     move.l    a5,a0
  68.     move.w    #DatasLen-1,d0
  69. .clr
  70.     clr.b    (A0)+
  71.     dbf    d0,.clr
  72.     st    enabled(A5)
  73.  
  74.     ifne    test
  75.     move.b    #2,GaugeWidth(A5)
  76.     endc
  77.  
  78.     ifeq    test
  79.  
  80.     suba.l    a1,a1
  81.     jsr    _LVOfindtask(a6)
  82.     move.l    d0,a4
  83.     tst.l    $ac(a4)
  84.     bne.w    clistart
  85.     lea    $5c(a4),a0
  86.     jsr    _LVOwaitport(a6)
  87.     lea    $5c(a4),a0
  88.     jsr    _LVOgetmsg(a6)
  89.     move.l    d0,mess(a5)
  90.  
  91.     move.l    d0,a3
  92.     tst.l    sm_numargs(a3)
  93.     beq.s    .startprog        ;Argumente übergeben ?
  94.  
  95.     move.l    sm_arglist(a3),a2
  96.     move.l    wa_lock(a2),d3
  97.     beq.s    .startprog        ;kein Lock angegeben ?
  98.  
  99.     move.l    wa_name(a2),d4        ;Name
  100.     moveq    #0,d5
  101.     bsr    GetIcon
  102. .startProg
  103.     move.l    4.w,a6
  104.     jsr    _LVOforbid(a6)
  105.     move.l    mess(a5),a1
  106.     jsr    _LVOreplymsg(a6)
  107. EndProg
  108.     lea    dataslen(A5),a5
  109.     unlk    a5
  110.     ifeq    test
  111.     rts
  112.     else
  113.     illegal
  114.     endc
  115. GetIcon
  116.     moveq    #-1,d7
  117.     
  118.     lea    iconlib(pc),a1
  119.     moveq    #0,d0
  120.     jsr    _LVOopenlibrary(a6)
  121.     tst.l    d0
  122.     beq.w    .noicon
  123.     move.l    d0,iconsave(a5)
  124.  
  125.     lea    doslib(pc),a1
  126.     moveq    #0,d0
  127.     jsr    _LVOopenlibrary(a6)
  128.     tst.l    d0
  129.     beq.w    .nodos
  130.     move.l    d0,dos2(a5)        ;Dosbase
  131.     move.l    d0,a6
  132.  
  133.     tst.l    d5
  134.     beq.s    .normal            ;über Icon gestartet -> sonst Parameter holen
  135.  
  136.     jsr    _LVOgetProgramDIR(a6)
  137.     move.l    d0,d3
  138.     beq.w    .startprog
  139.  
  140.     lea    Finalbuffer(a5),a0
  141.     move.l    a0,d1
  142.     move.l    a0,d4
  143.     moveq    #50,d2
  144.     jsr    _LVOgetProgramName(a6)
  145.     tst.l    d0
  146.     beq.w    .startprog
  147. .normal
  148.     move.l    d3,d1
  149.     jsr    _LVOcurrentdir(a6)    ;Lock -> Currentdir
  150.     move.l    d0,d6
  151.  
  152.     move.l    d4,a0            ;Name
  153.     move.l    iconsave(a5),a6
  154.     jsr    _LVOgetdiskobject(a6)    ;Icon suchen
  155.     tst.l    d0
  156.     beq.w    .noICON2
  157.     move.l    d0,a2
  158.  
  159.     cmp.b    #WBTool,do_type(a2)    ;Tool Icon ? 
  160.     bne.w    .oops            ;sollte nicht auftreten
  161.  
  162.     move.l    do_tooltypes(a2),a0
  163.     lea    Argstring(pc),a1    ;OutPutFormat finden
  164.     jsr    _LVOfindtooltype(a6)
  165.     tst.l    d0
  166.     beq.s    .noArgString
  167.     move.l    d0,a0
  168.     lea    Argbuffer(a5),a1
  169.  
  170.     moveq    #99-1,d0
  171. .arg
  172.     move.b    (A0)+,(a1)+
  173.     dbeq    d0,.arg
  174.     clr.b    (a1)
  175. .noArgString
  176.     move.l    do_tooltypes(a2),a0
  177.     lea    MemTypestring(pc),a1    ;Gauge finden
  178.     jsr    _LVOfindtooltype(a6)
  179.     tst.l    d0
  180.     beq.s    .nomemtype
  181.     move.l    d0,a0
  182.     cmp.b    #`0`,(a0)+
  183.     bne.s    .nomemtype
  184.     cmp.b    #`x`,(a0)+
  185.     bne.s    .nomemtype
  186.     moveq    #0,d0
  187. .loopi
  188.     move.b    (a0)+,d1
  189.     beq.s    .end
  190.     sub.b    #`0`,d1
  191.     cmp.b    #9,d1
  192.     bls.s    .lo1
  193.     sub.b    #`A`-`9`-1,d1
  194. .lo1
  195.     cmp.b    #$f,d1
  196.     bhi.s    .nomemtype
  197.  
  198.     lsl.l    #4,d0
  199.     or.b    d1,d0
  200.     bra.s    .loopi
  201. .end
  202.     move.l    d0,savememtype(a5)
  203. .nomemtype
  204.     move.l    do_tooltypes(a2),a0
  205.     lea    Gaugestring(pc),a1    ;Gauge finden
  206.     jsr    _LVOfindtooltype(a6)
  207.     tst.l    d0
  208.     beq.s    .oops
  209.     move.l    d0,a0
  210.     move.b    (a0)+,d0
  211.     beq.s    .oops
  212.     sub.w    #`0`,d0
  213.     cmp.b    #9,d0
  214.     bhi.s    .oops
  215.     
  216.     move.b    (a0)+,d1
  217.     beq.s    .end1
  218.     sub.w    #`0`,d1
  219.     cmp.b    #9,d1
  220.     bhi.s    .oops
  221.     mulu    #10,d0
  222.     add.b    d1,d0
  223. .end1
  224.     move.b    d0,GaugeWidth(A5)
  225. .oops
  226.     move.l    a2,a0
  227.     move.l    iconsave(a5),a6
  228.     jsr    _LVOfreediskobject(a6)
  229. .noICON2
  230.     move.l    d6,d1
  231.     move.l    dos2(a5),a6
  232.     jsr    _LVOCurrentDir(A6)
  233. .startprog
  234.     move.l    4.w,a6
  235.     move.l    dos2(a5),a1
  236.     jsr    _LVOcloselibrary(a6)
  237.     bsr.s    WBstart
  238.     moveq    #0,d7
  239. .nodos
  240.     move.l    iconsave(a5),a1        ;Iconlib
  241.     move.l    4.w,a6
  242.     jsr    _LVOcloselibrary(A6)
  243. .noicon    move.l    d7,d0            ;Return Value
  244.     rts
  245. Clistart:
  246.     pea    EndProg(pc)
  247.     st    d5
  248.     bsr    GetIcon
  249.     rts
  250.     endc
  251. WBstart:
  252.     lea    Argbuffer(a5),a3        ;Argumenttabelle
  253.     tst.b    (a3)
  254.     bne.s    .take
  255.     lea    DefArguments(pc),a0
  256. .copy
  257.     move.b    (A0)+,(A3)+
  258.     bne.s    .copy
  259. .take
  260.     bsr.b    OpenLibs        ;Open Libraries
  261.     beq.b    Error
  262.  
  263.     bsr.w    SetBroker        ;Commodity init
  264.     bne.b    Error
  265.  
  266.     bsr.w    InitRastport        ;Rastport zum Anzeigen init
  267.     beq.b    Error2
  268.  
  269.     bsr.w    Setint
  270. .Mainloop
  271.     move.l    4,a6
  272.     move.l    #$1000,d0
  273.     move.l    msgport(a5),d2
  274.     beq.s    .nomsg
  275.     move.l    d2,a0
  276.     move.b    mp_sigbit(a0),d1
  277.     bset    d1,d0
  278. .nomsg
  279.     move.l    mysignal(a5),d1
  280.     bset    d1,d0
  281.     jsr    _LVOwait(a6)
  282.     move.w    d0,d1
  283.     and.w    #$1000,d1
  284.     bne.s    .end
  285.  
  286.     bsr.w    CheckMessage
  287.     bne.s    .end
  288.     bsr.w    Gettime
  289.     beq.s    .waitagain
  290.     bsr.w    Showtime
  291. .waitagain
  292.     bra.b    .Mainloop
  293. .end
  294.     bsr.w    SetRast
  295.     moveq    #0,d6
  296.     move.w    maxwidth(a5),d7
  297.     bsr.w    ClearTitle
  298.  
  299.     move.l    commobase(a5),d0
  300.     beq.s    Error2
  301.     move.l    d0,a6
  302.     move.l    brokerstruct(a5),a0
  303.     jsr    _LVODeleteCxObjAll(a6)
  304. Error2
  305.     bsr.w    FreeRastPort        ;Alle Resourcen zurückgeben
  306. Error
  307.     bsr.w    Remint
  308.     bsr.w    CloseLibs
  309.     moveq    #0,d0
  310.     rts
  311. ;========================== Libs öffnen =================================
  312. OpenLibs:
  313.     move.l    4,a6
  314.     moveq    #-1,d0            ;irgendein Signal
  315.     jsr    _LVOallocsignal(a6)    ;allokieren
  316.     move.l    d0,mysignal(a5)        ;merken
  317.     blt.w    .error1
  318.  
  319.     suba.l    A1,A1
  320.     JSR    _LVOfindtask(A6)    ;Task finden
  321.     move.l    d0,mytask(a5)
  322.  
  323.     lea    commodiname(pc),a1
  324.     ifeq    use21
  325.     moveq    #39,d0
  326.     else
  327.     moveq    #37,d0
  328.     endc
  329.     jsr    _LVOopenlibrary(a6)    ;Commodities Library öffnen
  330.     move.l    d0,Commobase(a5)
  331.     beq.s    .nomsgport
  332.  
  333.     jsr    _LVOcreatemsgport(a6)
  334.     move.l    d0,msgport(a5)
  335.     beq.w    .Error1
  336. .nomsgport
  337.     lea    doslib(pc),a1
  338.     jsr    _LVOoldopenlibrary(a6)
  339.     move.l    d0,dos(A5)
  340.     beq.b    .Error1
  341.  
  342.     lea    intlib(pc),a1
  343.     jsr    _LVOoldopenlibrary(a6)
  344.     move.l    d0,int(A5)
  345.     beq.b    .Error1
  346.  
  347.     ifne    locale
  348.     lea    loclib(pc),a1
  349.     jsr    _LVOoldopenlibrary(a6)
  350.     move.l    d0,loc(A5)
  351.     beq.b    .Error1
  352.  
  353.     move.l    d0,a6
  354.     suba.l    a0,a0
  355.     jsr    _LVOopenlocale(A6)
  356.     move.l    d0,mylocale(a5)
  357.     beq.s    .Error1
  358.  
  359.     move.l    4.w,a6
  360.     endc
  361.  
  362.     lea    utillib(pc),a1
  363.     jsr    _LVOoldopenlibrary(a6)
  364.     move.l    d0,util(A5)
  365.     beq.b    .Error1
  366.  
  367.     lea    gfxlib(pc),a1
  368.     jsr    _LVOoldopenlibrary(a6)
  369.     move.l    d0,gfx(A5)
  370.     beq.b    .Error1
  371.  
  372.     lea    timer(pc),a0        
  373.     moveq    #UNIT_VBlank,d0        ;oder UNIT_MICROHZ, ist aber egal
  374.     lea.l    MyTimeVAL(A5),a1
  375.     jsr    _LVOOpendevice(a6)
  376.     tst.l    d0
  377.     bne.b    .Error2
  378.     lea.l    MyTimeVAL(A5),a1
  379.     move.l    a1,IOREQ(A5)
  380.     st    D0
  381. .Error1
  382.     rts
  383. .Error2
  384.     moveq    #0,d0
  385.     rts
  386. ;========================== Libs schließen ==============================
  387. CloseLibs:
  388.     move.l    4,a6
  389.     move.l    mysignal(a5),d0
  390.     blt.s    .nosig
  391.     jsr    _LVOfreesignal(a6)
  392. .nosig
  393.     move.l    IOReq(a5),d0
  394.     beq.s    .noTIMER
  395.     move.l    d0,a1
  396.     jsr    _LVOclosedevice(A6)
  397.     clr.l    IOReq(a5)
  398. .noTIMER
  399.     move.l    util(A5),d0
  400.     beq.s    .noutil
  401.     move.l    d0,a1
  402.     jsr    _LVOcloselibrary(a6)
  403.     clr.l    util(A5)
  404. .noutil
  405.     move.l    gfx(A5),d0
  406.     beq.s    .nogfx
  407.     move.l    d0,a1
  408.     jsr    _LVOcloselibrary(a6)
  409.     clr.l    gfx(A5)
  410. .nogfx
  411.     ifne    locale
  412.     move.l    loc(A5),d0
  413.     beq.s    .noloc
  414.     move.l    d0,a6
  415.  
  416.     move.l    mylocale(a5),d0
  417.     beq.s    .nolocale
  418.     move.l    d0,a0
  419.     jsr    _LVOcloselocale(A6)
  420. .nolocale
  421.     move.l    a6,a1
  422.     move.l    4.w,a6
  423.     jsr    _LVOcloselibrary(a6)
  424. .noloc
  425.     endc
  426.  
  427.     move.l    dos(A5),d0
  428.     beq.s    .nodos
  429.     move.l    d0,a1
  430.     jsr    _LVOcloselibrary(a6)
  431.     clr.l    dos(A5)
  432. .nodos
  433.     move.l    Int(A5),d0
  434.     beq.s    .noint
  435.     move.l    d0,a1
  436.     jsr    _LVOcloselibrary(a6)
  437.     clr.l    Int(A5)
  438. .noint
  439.     move.l    Commobase(a5),d0
  440.     beq.s    .nocom
  441.     move.l    d0,a1
  442.     jsr    _LVOcloselibrary(a6)
  443. .nocom
  444.     move.l    msgport(a5),d0
  445.     beq.s    .nomsg
  446.     move.l    d0,a0
  447.     jsr    _LVOdeletemsgport(a6)
  448. .nomsg
  449.     rts
  450. ;============ Test, ob Message an CommodityPort =========================
  451. CheckMessage:
  452.     move.l    4,a6
  453.     move.l    msgport(a5),d0
  454.     beq.s    .ok
  455.     move.l    d0,a0
  456.     jsr    _LVOgetmsg(a6)
  457.     tst.l    d0
  458.     beq.b    .ok            ;;
  459.                 ;Warten auf Hotkey/Message vom Exchange Programm
  460.     move.l    d0,a4
  461.     move.l    d0,a0
  462.     move.l    Commobase(a5),a6
  463.     jsr    _LVOcxmsgtype(a6)
  464.  
  465.     cmp.l    #cxm_command,d0
  466.     bne.b    .reply
  467.     move.l    a4,a0
  468.     jsr    _LVOcxmsgid(a6)
  469.  
  470.     cmp.l    #cxcmd_unique,d0    ;Programm zum 2.Male aufgerufen ?
  471.     beq.b    .endit            
  472.     cmp.l    #cxcmd_kill,d0        ;Beenden ?
  473.     beq.b    .endit
  474.     cmp.l    #cxcmd_disable,d0    ;Deaktivieren ?
  475.     bne.s    .nodis
  476.     moveq    #0,d0
  477.     bra.s    .acti
  478. .nodis
  479.     cmp.l    #cxcmd_enable,d0    ;Aktivieren ?
  480.     bne.s    .reply
  481.     moveq    #1,d0
  482. .acti
  483.     move.b    d0,enabled(A5)
  484.     move.l    brokerstruct(a5),a0
  485.     jsr    _LVOactivatecxobj(a6)    ;Broker (de)aktivieren
  486. .reply
  487.     move.l    4.w,a6
  488.     move.l    a4,a1
  489.     jsr    _LVOreplymsg(a6)
  490.  
  491.     tst.b    enabled(A5)
  492.     bne.s    .ok
  493.  
  494.     bsr.w    SetRast
  495.     moveq    #0,d6
  496.     move.w    maxwidth(a5),d7
  497.     bsr.w    ClearTitle
  498. .ok
  499.     moveq    #0,d0
  500.     rts
  501. .endit
  502.     move.l    4.w,a6
  503.     move.l    a4,a1
  504.     jsr    _LVOreplymsg(a6)
  505.     moveq    #-1,d0
  506.     rts
  507. ;======================== Commodity anmelden =============================
  508. SetBroker
  509.     tst.l    msgport(a5)
  510.     beq.s    .nomsg
  511.  
  512.     move.l    commobase(a5),a6
  513.  
  514.     lea    mybroker(a5),a0
  515.     move.b    #nb__version,nb_version(a0)
  516.     lea    commoname(pc),a1
  517.     move.l    a1,nb_name(a0)
  518.     lea    Commotitle(pc),a1
  519.     move.l    a1,nb_title(a0)
  520.     lea    commoaha(pc),a1
  521.     move.l    a1,nb_descr(a0)
  522.     move.w    #nbu_notify!nbu_unique,nb_unique(a0)
  523.     move.b    #0,nb_pri(a0)    ;Priorität setzen (entfällt->siehe WBstartup)
  524.     move.l    msgport(a5),a1
  525.     move.l    a1,nb_port(a0)
  526.  
  527.     lea    fehler(a5),a1
  528.     move.l    a1,d0
  529.     jsr    _LVOCxBroker(a6)    ;Broker init
  530.  
  531.     tst.l    fehler(a5)
  532.     bne.b    .remport
  533.     move.l    d0,brokerstruct(A5)
  534.  
  535.     move.l    d0,a0
  536.     moveq    #1,d0
  537.     jsr    _LVOactivatecxobj(a6)    ;Broker aktivieren
  538.  
  539.     moveq    #0,d0
  540. .remport
  541. .nomsg
  542.     rts
  543. *************************************************************
  544. *       Setzt Interrupt für Scroller (VBlank)               *
  545. *************************************************************
  546. Setint    
  547.     move.l    4.w,a6
  548.     lea    inter(a5),a1
  549.     lea    INT_Prog(pc),a0
  550.     move.l    a0,IS_code(a1)
  551.     move.l    a5,is_data(a1)
  552.     move.b    #nt_interrupt,ln_type(a1)
  553.     moveq    #5,d0
  554.     jsr    _LVOaddintserver(a6)
  555.     st    intset(A5)
  556.     rts
  557. *************************************************************
  558. *         entfernt Scroller-Interrupt                       *
  559. *************************************************************
  560. Remint
  561.     tst.b    intset(a5)
  562.     beq.s    .no
  563.     move.l    4.w,a6
  564.     moveq    #5,d0
  565.     sf    intset(a5)
  566.     lea    inter(a5),a1
  567.     jsr    _LVOremintserver(a6)
  568. .no    rts
  569. *************************************************************
  570. *                  VBLANK Interrupt                         *
  571. *************************************************************
  572. INT_Prog
  573.     movem.l    d0-a6,-(sp)
  574.     move.b    counter(A1),d0
  575.     addq.b    #1,d0
  576.     and.b    #15,d0
  577.     move.b    d0,counter(A1)
  578.     bne.s    .ret
  579.  
  580.     move.l    4.w,a6
  581.     move.l    mysignal(A1),d1
  582.     move.l    mytask(A1),a1
  583.     moveq    #0,d0
  584.     bset    d1,d0
  585.     jsr    _LVOsignal(a6)
  586. .ret
  587.     movem.l    (sp)+,d0-a6
  588.     moveq    #0,d0
  589.     rts
  590. ;============================ HexDezRoutine =============================
  591. ToDEZ2                        ;2 Stellen (01)
  592.     movem.l    d0-a3,-(Sp)
  593.     and.l    #$ff,d1        ;sicher gehen
  594.     moveq    #1,d0
  595.     lea    dectable2(pc),a1
  596.     bra.s    Indez
  597. ToDEZ                        ;4 Stellen (1994)
  598.     movem.l    d0-a3,-(Sp)
  599.     moveq    #3,d0
  600.     lea    dectable4(pc),a1
  601. Indez
  602.     moveq    #0,d4
  603. .loopw
  604.     moveq    #-1,d3
  605.     move.l    -(a1),d2
  606. .loopw2
  607.     addq.b    #1,d3
  608.     sub.l    d2,d1
  609.     bcc.s    .loopw2
  610.     add.l    d2,d1
  611.     add.b    #`0`,d3
  612.     move.b    d3,(a4)+
  613.     dbf    d0,.loopw
  614.     movem.l    (sp)+,d0-a3
  615.     rts
  616. ;= holt aktuelle Systemzeit und legt diese entsprechend in den Merkzellen ==
  617. ;=========================== als Normalzeit ab =============================
  618. GetTime
  619.     moveq    #0,d0
  620.     tst.b    enabled(A5)
  621.     beq.s    .skip
  622.  
  623.     move.l    4,a6
  624.     move.l    IOREQ(a5),a1
  625.     move.w    #TR_getsystime,28(a1)    
  626.     jsr    _LVOdoio(a6)
  627.  
  628.     move.l    IOREQ(a5),a1
  629.     move.l    iotv_time(a1),d0
  630.     cmp.l    lasttime(a5),d0
  631.     beq.s    .skip
  632.     move.l    d0,lasttime(A5)
  633.  
  634.     move.l    util(a5),a6
  635.     lea    MyDate(a5),a0
  636.     jsr    _LVOAmiga2Date(A6)
  637.     st    d0
  638. .skip
  639.     rts
  640. SetRast
  641.     lea.l    MyRastPort(a5),a1
  642.     moveq    #0,d0
  643.     move.b    mybg(a5),d0
  644.     move.l    gfx(A5),a6
  645.     jmp    _LVOsetrast(a6)
  646. ;================= Routine zum Anzeigen der aktuellen Zeit =================
  647. ShowTime
  648.     tst.l    MyFont(A5)        ;kein Rastport zu haben
  649.     beq.w    .error1            ;-> Raus
  650.  
  651.     bsr.b    SetRast
  652.     
  653.     lea    Argbuffer(a5),a3        ;Argumenttabelle
  654.     lea    Finalbuffer(A5),a4        ;Puffer für den Text
  655. .Showloop
  656.     move.b    (a3)+,d0
  657.     beq.w    .Displayit
  658.     cmp.b    #`%`,d0
  659.     beq.s    .DoPercent
  660. .Jumpin
  661.     move.b    d0,(a4)+
  662.     bra.s    .Showloop
  663. .DoPercent
  664.     move.b    (a3)+,d0        ;Zeichen nach dem "%" holen
  665.     cmp.b    #`%`,d0
  666.     beq.s    .jumpin
  667.  
  668.     cmp.b    #`S`,d0
  669.     beq    .doStardate
  670.  
  671.     cmp.b    #`H`,d0
  672.     bne.s    .no12h
  673.     move.w    MyDate+hour(a5),d1
  674.     beq.s    .do12
  675.     cmp.b    #12,d1
  676.     ble.s    .lo
  677.     sub.b    #12,d1
  678. .lo
  679.     bra    .dec
  680. .do12
  681.     moveq    #12,d1
  682.     bra    .dec
  683. .no12h
  684.     move.w    MyDate+hour(a5),d1
  685.     cmp.b    #`h`,d0
  686.     beq.w    .dec
  687.  
  688.     cmp.b    #`a`,d0            ;AM/PM
  689.     bne.s    .noampm
  690.     ifne    locale
  691.     move.w    d1,d4
  692.     moveq    #AM_STR,d1
  693.     cmp.w    #12,d4
  694.     blt.s    .nopm
  695.     addq.w    #PM_STR-AM_STR,d1
  696. .nopm
  697.     bra.w    .addlocstring
  698.     else
  699.     lea    myAM(pc),a1
  700.     cmp.w    #12,d1
  701.     blt.s    .nopm
  702.     addq.l    #myPM-myam,a1
  703. .nopm
  704.     bra    .copyday
  705.     endc
  706. .noampm
  707.     move.w    MyDate+min(a5),d1
  708.     cmp.b    #`n`,d0
  709.     beq.s    .dec
  710.  
  711.     move.w    MyDate+sec(a5),d1
  712.     cmp.b    #`s`,d0
  713.     beq.s    .dec
  714.  
  715.     move.w    MyDate+mday(a5),d1
  716.     cmp.b    #`D`,d0
  717.     beq.s    .dec
  718.  
  719.     move.w    MyDate+month(a5),d1
  720.     cmp.b    #`N`,d0
  721.     beq.s    .dec
  722.  
  723.     move.w    MyDate+year(a5),d1
  724.     cmp.b    #`y`,d0
  725.     bne.s    .noyear1
  726.     divu    #100,d1
  727.     swap    d1
  728.     bra.s    .dec
  729. .noyear1
  730.     cmp.b    #`Y`,d0
  731.     bne.s    .noyear
  732.     bsr.w    todez
  733.     bra.w    .Showloop
  734. .noyear
  735.     moveq    #0,d1
  736.     move.w    MyDate+wday(a5),d1
  737.  
  738.     ifeq    locale
  739.     ifeq    deutsch
  740.     mulu    #10,d1
  741.     else
  742.     mulu    #11,d1
  743.     endc
  744.     lea    Daynames(pc),a1
  745.     lea    (a1,d1.w),a1
  746.     cmp.b    #`w`,d0
  747.     beq.s    .WeekShort
  748.     cmp.b    #`W`,d0
  749.     beq.s    .Weekday
  750.  
  751.     move.w    MyDate+month(a5),d1
  752.     subq.w    #1,d1
  753.     mulu    #10,d1
  754.     lea    MonthNames(pc),a1
  755.     lea    (a1,d1.w),a1
  756.  
  757.     cmp.b    #`m`,d0
  758.     beq.s    .WeekShort
  759.     cmp.b    #`M`,d0
  760.     beq.s    .Weekday
  761.     else
  762.  
  763.     addq.w    #DAY_1,d1
  764.     cmp.b    #`W`,d0
  765.     beq.s    .addlocstring
  766.     addq.w    #ABDAY_1-DAY_1,d1
  767.     cmp.b    #`w`,d0
  768.     beq.s    .addlocstring
  769.  
  770.     move.w    MyDate+month(a5),d1
  771.     add.w    #MON_1-1,d1
  772.     cmp.b    #`M`,d0
  773.     beq.s    .addlocstring
  774.     add.w    #ABMON_1-MON_1,d1
  775.     cmp.b    #`m`,d0
  776.     beq.s    .addlocstring
  777.  
  778.     endc
  779.  
  780.     bra.w    .Showloop
  781. .dec:
  782.     bsr.w    toDez2
  783.     bra.w    .Showloop
  784. .WeekShort                        ;Wochentag
  785.     move.b    (a1)+,(a4)+
  786.     move.b    (a1)+,(a4)+
  787.     move.b    (a1)+,(a4)+
  788.     bra.w    .Showloop
  789. .addlocstring
  790.     move.l    mylocale(a5),a0
  791.     move.l    loc(a5),a6
  792.     move.l    d1,d0
  793.     jsr    _LVOgetlocalestr(A6)
  794.     move.l    d0,a1
  795. .Weekday                        ;Wochentag lang
  796. .copyday
  797.     move.b    (a1)+,(a4)+
  798.     bne.s    .copyday
  799.     subq.l    #1,a4
  800.     bra.w    .Showloop
  801. .doStardate
  802.     move.b    #`0`,(a4)+
  803.     move.l    lasttime(A5),D1
  804.     divu    #60*60*3,d1    ;3 Stunden statt 24 für 8-fache Genauigkeit
  805.     mulu    #100,d1        ;mal 100 wegen 365,25 Tagen Pro Jahr und Integerrechnung
  806.     lsr.l    #3,d1        ;durch 8 (jetzt darf man)
  807.     divu.w    #36525,d1    ;365,25*100
  808.     swap    d1        ;Rest=Tage im aktuellen Jahr
  809.     and.l    #$ffff,d1    ;ausmaskieren
  810.  
  811.     lsl.l    #6,d1        ;für höhere Genauigkeit links shiften
  812.     divu.w    #365*100<<6/1000,d1    ;durch 100, mal 1000 und durch 365
  813.     and.l    #$ffff,d1    ;ausmaskieren
  814.     bsr    todez        ;4 Stellen printen
  815.  
  816.     move.w    MyDate+year(a5),d1
  817.     sub.w    #1990,d1
  818.     cmp.w    #9,d1
  819.     bhi.s    .skipye
  820.     add.b    #`0`,d1
  821.     move.b    d1,-4(a4)
  822. .skipye
  823.     move.b    #$2e,(a4)+
  824.  
  825.     move.w    MyDate+hour(a5),d1
  826.     mulu.w    #10,d1
  827.     divu.w    #24,d1
  828.     addi.b    #`0`,d1
  829.     move.b    d1,(a4)+
  830.     bra    .showloop
  831. .Displayit
  832.  
  833.     clr.b    (a4)
  834. .repeat
  835.     lea    Finalbuffer(A5),a0        ;Puffer für den Text
  836.     move.l    a0,a3
  837.     moveq    #-1,d0
  838. .loop                        ;darf ich, da ja vorher gerade
  839.     addq.l    #1,d0                ;clr.b (a4), also 100%ig
  840.     tst.b    (a3)+                ;terminiert
  841.     bne.s    .loop
  842.     subq.l    #2,a3                ;-1 = Null-Byte; -2 = Byte davor
  843.  
  844.     move.l    d0,d6                ;Länge des Textes in Chars
  845.     lea    myrastport(A5),a1
  846.     move.l    gfx(A5),a6
  847.     jsr    _LVOtextlength(A6)
  848.     move.l    d0,d7                ;Länge des Textes in Pixeln
  849.  
  850.     add.w    #28,d0                ;Breite des Depth-Gadgets
  851.     cmp.w    LastWidth(A5),d0        ;Text breiter als Screen ?
  852.     blt.s    .lower
  853.     clr.b    (a3)
  854.     bra.s    .repeat
  855. .lower
  856.     cmp.w    MaxWidth(a5),d7
  857.     blt.s    .nomax
  858.     move.w    d7,MaxWidth(A5)
  859. .nomax
  860.     moveq    #0,d4
  861.     move.b    GaugeWidth(A5),d4
  862.     beq.w    .nogauge
  863.     mulu    #10,d4
  864.     add.w    d4,d0
  865.     add.w    #20,d0
  866.     cmp.w    LastWidth(A5),d0        ;Text breiter als Screen ?
  867.     bge.w    .noGauge            ;Überspringen
  868.  
  869.     move.b    #` `,1(A3)
  870.     ifeq    deutsch
  871.     move.b    #`E`,2(A3)
  872.     else
  873.     move.b    #`L`,2(A3)
  874.     endc
  875.     clr.b    3(a3)
  876.     addq.w    #2,d6
  877.     move.l    d6,d0
  878.     lea    Finalbuffer(A5),a0        ;Puffer für den Text
  879.     lea    myrastport(A5),a1
  880.     jsr    _LVOtextlength(A6)
  881.     move.l    d0,d7
  882.     addq.l    #6,d7
  883.     move.l    d7,xpos(a5)
  884.     add.l    d4,d7
  885.     addq.l    #6,d7
  886.     move.l    d7,d5
  887.  
  888.     lea    MyF(pc),a0            ;Puffer für den Text
  889.     lea    myrastport(A5),a1
  890.     moveq    #1,d0
  891.     jsr    _LVOtextlength(A6)
  892.     add.l    d0,d7
  893.  
  894.     lea    myrastport(A5),a1
  895.     moveq    #0,d0
  896.     jsr    _LVOSetAPen(A6)
  897.  
  898.     lea    myrastport(A5),a1
  899.     move.l    xpos(a5),d0
  900.     addq.w    #2,d0
  901.     moveq    #0,d1
  902.     move.w    d4,d2
  903.     add.w    d0,d2
  904.     move.w    MyAttr+ta_YSize(A5),d3        ;Höhe der Zeile
  905.     subq.w    #2,d3
  906.     jsr    _LVORectFill(A6)
  907.  
  908.     move.l    4.w,a6
  909.     move.l    #MEMF_TOTAL,d1
  910.     add.l    SaveMEMtype(A5),d1    ;alles, was frei ist
  911.     jsr    _LVOAvailMem(A6)
  912.     move.l    d0,AvailMem(a5)
  913.  
  914.     move.l    4.w,a6
  915.     move.l    SaveMEMtype(A5),d1    ;alles, was frei ist
  916.     jsr    _LVOAvailMem(A6)
  917.     move.l    d0,FreeMem(a5)
  918.     beq.s    .skip2nd
  919.  
  920.     move.l    util(A5),a6
  921.     move.l    d4,d1            ;Max. Balkenbreite
  922.     jsr    _LVOUMult32(A6)
  923.  
  924.     move.l    AvailMem(a5),d1
  925.     jsr    _LVOUDivMod32(a6)
  926.     sub.l    d0,d4            ;aktuelle Balkenbreite
  927.  
  928.     move.l    gfx(A5),a6
  929.     lea    myrastport(A5),a1
  930.     moveq    #3,d0
  931.     jsr    _LVOSetAPen(A6)
  932.  
  933.     lea    myrastport(A5),a1
  934.     clr.w    rp_flags(A1)
  935.  
  936.     move.l    xpos(a5),d0
  937.     addq.w    #2,d0
  938.     moveq    #1,d1
  939.     move.w    d4,d2
  940.     add.w    d0,d2
  941.     move.w    MyAttr+ta_YSize(A5),d3        ;Höhe der Zeile
  942.     subq.w    #3,d3
  943.     jsr    _LVORectFill(A6)
  944. .skip2nd
  945.     move.l    gfx(A5),a6
  946.     lea    myrastport(A5),a1
  947.     moveq    #0,d0
  948.     move.b    myfg(a5),d0
  949.     jsr    _LVOSetAPen(A6)
  950.  
  951.     lea.l    MyRastPort(a5),a1
  952.     move.l    d5,d0
  953.     move.l    MyFont(a5),a0
  954.     move.w    tf_Baseline(a0),d1
  955.     jsr    _LVOMove(A6)
  956.  
  957.     lea.l    MyRastPort(a5),a1
  958.     lea    myf(pc),a0        ;Puffer für den Text
  959.     moveq    #1,d0
  960.     jsr    _LVOtext(A6)
  961.  
  962.     cmp.w    MaxWidth(a5),d7
  963.     blt.s    .nomax2
  964.     move.w    d7,MaxWidth(A5)
  965.     bra.s    .error1
  966. .nomax2
  967. .nogauge
  968.     addq.w    #6,d7
  969. .error1
  970. ClearTitle:
  971.     bsr.w    LockPub
  972.     beq.b    .Error1
  973.  
  974.     bsr.b     CheckRast        ;Test, ob sich der Screen geändert
  975.                     ;hat
  976.  
  977.     tst.l    MyFont(A5)        ;kein Rastport zu haben
  978.     beq.b    .dofree            ;-> Raus
  979.  
  980.     move.l    gfx(A5),a6
  981.  
  982.     ifne    locklayer
  983.     move.l    a5,-(sp)
  984.     move.l    d0,a5
  985.     move.l    sc_BarLayer(a5),a5
  986.     jsr    _LVOlocklayerrom(a6)
  987.     move.l    (sp)+,a5
  988.     endc
  989.  
  990.     lea.l    MyRastPort(a5),a1
  991.     moveq    #6,d0
  992.     move.l    MyFont(a5),a0
  993.     move.w    tf_Baseline(a0),d1
  994.     jsr    _LVOMove(A6)
  995.  
  996.     lea.l    MyRastPort(a5),a1
  997.     lea    Finalbuffer(A5),a0        ;Puffer für den Text
  998.     move.l    d6,d0
  999.     jsr    _LVOtext(A6)
  1000.  
  1001.     lea.l    MyRastPort(a5),a0
  1002.     moveq    #0,d0
  1003.     moveq    #0,d1
  1004.  
  1005.     move.l    mypub(a5),a1
  1006.     move.l    sc_BarLayer(a1),a1
  1007.     move.l    lr_rp(a1),a1
  1008.  
  1009.     move.w    LastWidth(A5),d2
  1010.     sub.w    #28,d2
  1011.     sub.w    d7,d2
  1012.  
  1013.     moveq    #1,d3                ;DestY
  1014.  
  1015.     move.l    d7,d4                ;Breite des Ganzen
  1016.     move.w    MyAttr+ta_YSize(A5),d5        ;Höhe der Zeile
  1017.     move.l    #$c0,d6
  1018.     jsr    _LVOclipblit(a6)
  1019.  
  1020.     ifne    locklayer
  1021.     move.l    a5,-(sp)
  1022.     move.l    mypub(a5),a5
  1023.     move.l    sc_BarLayer(a5),a5
  1024.     jsr    _LVOunlocklayerrom(a6)
  1025.     move.l    (sp)+,a5
  1026.     endc
  1027. .dofree
  1028.     bsr.b    FreePub
  1029. .Error1
  1030.     rts
  1031. ;================== Test, ob der Screen sich geändert hat ==================
  1032. CheckRast
  1033.     movem.l    d0-a6,-(sp)
  1034.     move.l    mypub(A5),a0
  1035.     move.w    Lastwidth(a5),d0
  1036.     cmp.w    sc_Width(a0),d0
  1037.     bne.s    .new
  1038.  
  1039.     move.b    LastDepth(A5),d0
  1040.     cmp.b    sc_BitMap+bm_depth(a0),d0
  1041.     bne.s    .new
  1042.  
  1043.     move.l    sc_BarLayer(a0),a0
  1044.     move.l    lr_rp(a0),a0
  1045.     move.l    rp_Font(a0),d0
  1046.     move.l    d0,a0
  1047.     cmp.l    LastFont(A5),d0
  1048.     bne.s    .new
  1049.  
  1050.     move.w    tf_YSize(a0),d0
  1051.     cmp.w    MyAttr+ta_YSize(a5),d0
  1052.     bne.s    .new    
  1053.     move.b    tf_Flags(a0),d0
  1054.     cmp.b    MyAttr+ta_Flags(a5),d0
  1055.     beq.s    .end
  1056. .new
  1057.     bsr.w    FreeRastPort        ;Alle Resourcen zurückgeben
  1058.  
  1059. ;    bsr    InitRastport        ;Rastport zum Anzeigen init
  1060. ;statt dessen Direktaufruf
  1061.     bsr.b    DupFont        ;in D5 Höhe des Screenfonts zurück
  1062.     bsr.w    InitRastandBit
  1063.     bsr    Setrast
  1064. .end
  1065.     movem.l    (sp)+,d0-a6
  1066.     rts
  1067. ;================ temporären Rastport für Anzeige einrichten ===============
  1068. InitRastport:
  1069.     bsr.b    LockPub
  1070.     beq.b    .Error1
  1071.  
  1072.     bsr.b    DupFont        ;in D5 Höhe des Screenfonts zurück
  1073.     bsr.w    InitRastandBit
  1074.                 ;wenn hier Änderungen, dann auch oben !!
  1075. ;    beq    .Error2
  1076. ;.Error2
  1077.  
  1078.     bsr.b    FreePub
  1079. .Error1
  1080.     tst.l    d0
  1081.     rts
  1082. LockPub
  1083.     move.l    int(a5),a6
  1084.     lea    WBName(pc),a0
  1085.     jsr    _LVOLockpubscreen(A6)
  1086.     move.l    d0,mypub(a5)
  1087.     rts
  1088. FreePub
  1089.     movem.l    d0-a6,-(sp)
  1090.     move.l    int(a5),a6
  1091.     move.l    mypub(a5),d0
  1092.     beq.s    .nopub
  1093.     move.l    d0,a1
  1094.     suba.l    a0,a0
  1095.     jsr    _LVOUnlockpubscreen(A6)
  1096.     clr.l    mypub(A5)
  1097. .nopub
  1098.     movem.l    (sp)+,d0-a6
  1099.     rts
  1100. DupFont
  1101.     move.l    mypub(a5),a0
  1102.     ifne    use21
  1103.     move.b    #0,myfg(a5)
  1104.     move.b    #1,mybg(a5)
  1105.     else
  1106.     move.b    #1,myfg(a5)
  1107.     move.b    #2,mybg(a5)
  1108.     endc
  1109.  
  1110.     move.l    int(A5),a6
  1111.     jsr    _LVOGetScreenDrawinfo(a6)
  1112.     tst.l    d0
  1113.     beq.s    .lo
  1114.     move.l    d0,a1
  1115.     cmp.w    #BARBLOCKPEN,dri_numpens(a1)
  1116.     blt.s    .lo2
  1117.     move.l    dri_pens(a1),d0
  1118.     beq.s    .lo2
  1119.     move.l    d0,a0
  1120.     move.w    BARDETAILPEN*2(a0),d0
  1121.     move.b    d0,myfg(A5)
  1122.     move.w    BARBLOCKPEN*2(a0),d0
  1123.     move.b    d0,mybg(A5)
  1124. .lo2
  1125.     move.l    mypub(a5),a0
  1126.     jsr    _LVOFreeScreenDrawinfo(A6)
  1127. .lo
  1128.     move.l    mypub(a5),a0
  1129.     move.l    sc_BarLayer(a0),a0
  1130.     move.l    lr_rp(a0),a0
  1131.     move.l    rp_Font(a0),a0
  1132.     move.l    a0,LastFont(A5)
  1133.  
  1134.     lea    MyAttr(A5),a1
  1135.     move.b    tf_Style(a0),ta_Style(a1)
  1136.     move.b    tf_Flags(a0),ta_Flags(a1)
  1137.     move.w    tf_YSize(a0),ta_YSize(a1)
  1138.  
  1139.     lea    Fontname(a5),a3
  1140.     move.l    a3,ta_name(A1)
  1141.     move.l    LN_Name(a0),a2
  1142.  
  1143.     moveq    #30,d0
  1144. .copy
  1145.     move.b    (A2)+,(A3)+
  1146.     dbeq    d0,.copy
  1147.     rts
  1148. InitRastandBit
  1149.     move.l    mypub(a5),a1
  1150.     lea    sc_BitMap(a1),a0
  1151.     moveq    #0,d2
  1152.     move.b    bm_Depth(a0),d2
  1153.     move.b    d2,LastDepth(A5)
  1154.  
  1155.     moveq    #0,d0
  1156.     move.w    sc_Width(a1),d0
  1157.     move.w    d0,Lastwidth(a5)
  1158.  
  1159.     moveq    #0,d1
  1160.     move.w    MyAttr+ta_YSize(A5),d1        ;Höhe des Fonts
  1161.  
  1162.     ifne    use21
  1163.     bsr    AllocBitMap
  1164.     bne.s    .error1
  1165.     else
  1166.     moveq    #0,d3
  1167.     move.l    gfx(A5),a6
  1168.     jsr    _LVOAllocbitmap(a6)
  1169.     move.l    d0,MyBitmap(A5)
  1170.     beq.b    .error1
  1171.     endc
  1172.  
  1173.     lea.l    MyRastPort(a5),a3
  1174.     move.l    a3,a1
  1175.     jsr    _LVOInitrastport(A6)
  1176.  
  1177.     move.l    MyBitMap(a5),d0
  1178.     move.l    d0,rp_BitMap(a3)
  1179.  
  1180.     lea    MyAttr(A5),a0
  1181.     jsr    _LVOOpenFont(A6)
  1182.     move.l    d0,MyFont(a5)
  1183.     beq.s    .Error1
  1184.  
  1185.     move.l    a3,a1
  1186.     move.l    d0,a0
  1187.     jsr    _LVOSetFont(A6)
  1188.  
  1189.     move.l    a3,a1
  1190.     moveq    #0,d0
  1191.     move.b    myfg(a5),d0
  1192.     jsr    _LVOSetAPen(A6)
  1193.  
  1194.     move.l    a3,a1
  1195.     moveq    #0,d0
  1196.     move.b    mybg(a5),d0
  1197.     jsr    _LVOSetBPen(A6)
  1198.  
  1199.     move.l    a3,a1            ;Rastport
  1200.     move.l    #RP_JAM2,d0
  1201.     jsr    _LVOsetDrMd(A6)
  1202.     st    d0
  1203. .error1    rts
  1204.  
  1205. FreeRastPort
  1206.     move.l    gfx(A5),a6
  1207.  
  1208.     ifne    use21
  1209.     bsr    Freebitmap
  1210.     else
  1211.     move.l    MyBitmap(A5),d0
  1212.     beq.s    .noBit
  1213.     move.l    d0,a0
  1214.     jsr    _LVOFreebitmap(a6)
  1215.     clr.l    MyBitmap(a5)
  1216. .NoBit
  1217.     endc
  1218.  
  1219.     move.l    MyFont(a5),d0
  1220.     beq.s    .nofont
  1221.     move.l    d0,a1
  1222.     jsr    _LVOCloseFont(A6)
  1223.     clr.l    MyFont(A5)
  1224. .nofont
  1225.     rts
  1226.     ifne    use21
  1227. AllocBitMap
  1228.     move.l    gfx(A5),a6
  1229.  
  1230.     lea    MY_Bitmap(A5),a3
  1231.     move.l    a3,MyBitmap(A5)
  1232.  
  1233.     lea    (a3),a0
  1234.     lea    bm_planes(A3),a3
  1235.     lea    (a3),a1
  1236.     moveq    #7,d5
  1237. .clr    clr.l    (a1)+
  1238.     dbf    d5,.clr
  1239.  
  1240.     move.w    d0,d3        ;Breite (Pix)
  1241.     add.w    #16,d3
  1242.     and.w    #~15,d3
  1243.  
  1244.     moveq    #0,d0
  1245.     move.b    d2,d0        ;Tiefe (Bits)
  1246.     moveq    #0,d2
  1247.     move.w    d1,d2        ;Höhe
  1248.     move.w    d1,d4
  1249.     moveq    #0,d1
  1250.     move.w    d3,d1        ;Breite (Pix)
  1251.  
  1252.     jsr    _LVOinitbitmap(A6)
  1253.  
  1254.     subq.w    #1,d2
  1255. .allplanes
  1256.     move.w    d3,d0
  1257.     move.w    d4,d1
  1258.     addq.w    #1,d1
  1259.     jsr    _LVOallocraster(A6)
  1260.     move.l    d0,(A3)+
  1261.     beq.s    .fail
  1262.     move.l    d0,a0    ;;!!
  1263.     move.l    #1,(a0)
  1264.     dbf    d2,.allplanes
  1265.     moveq    #0,d0
  1266.     rts
  1267. .fail
  1268.     moveq    #-1,d0
  1269.     rts
  1270. FreeBitmap
  1271.     move.l    gfx(A5),a6
  1272.  
  1273.     lea    MY_Bitmap(A5),a3
  1274.     moveq    #0,d2
  1275.     move.b    bm_depth(a3),d2
  1276.     subq.w    #1,d2
  1277.  
  1278.     move.w    bm_bytesperrow(a3),d3
  1279.     lsl.w    #3,d3
  1280.     lea    bm_planes(A3),a4
  1281. .allplanes
  1282.     move.w    d3,d0
  1283.     move.w    bm_rows(a3),d1
  1284.     move.l    (a4),d4
  1285.     beq.s    .noplane
  1286.     move.l    d4,a0
  1287.     addq.w    #1,d1
  1288.     jsr    _LVOfreeRaster(A6)
  1289. .noplane
  1290.     clr.l    (a4)+
  1291.     dbf    d2,.allplanes
  1292.     rts
  1293.     endc
  1294. ;================================ Daten =================================
  1295. DefArguments
  1296.     dc.b    `%w %D.%m.%Y %h:%n:%s %a`,0
  1297.  
  1298.     ;%h    -> Stunden (10)
  1299.     ;%n    -> Minuten (33)
  1300.     ;%s    -> Sekunden (12)
  1301.     ;%D    -> Tag    (12)
  1302.     ;%N    -> Monat als Zahl (01)
  1303.     ;%y    -> Jahr kurz (94)
  1304.     ;%Y    -> Jahr (1994)
  1305.     ;%w    -> Wochentag kurz (Fri)
  1306.     ;%W    -> Wochentag lang (Friday)
  1307.     ;%m    -> Monat kurz (Jan)
  1308.     ;%M    -> Monat (January)
  1309.     ;%H    -> Stunden im 12h Format
  1310.     ;%a    -> AM/PM
  1311.     ;%S    -> Stardate (für Algo, siehe  DOC)
  1312.     even
  1313.     dc.l    1
  1314.     dc.l    10
  1315. dectable2
  1316.     dc.l    100
  1317.     dc.l    1000
  1318. dectable4
  1319. ;    dc.l    10000
  1320. ;    dc.l    100000
  1321. ;    dc.l    1000000
  1322. ;    dc.l    10000000
  1323. ;Dectable8
  1324.  
  1325.     dc.b    `$VER: Titleclock 1001 `
  1326.     ver
  1327.  
  1328.     if    Kickversion=37
  1329.     dc.b    ` OS2.04`
  1330.     else
  1331.  
  1332.     if    Kickversion=38
  1333.     dc.b    ` OS2.1`
  1334.     else
  1335.     dc.b    ` OS3.x`
  1336.     endc
  1337.  
  1338.     endc
  1339.  
  1340.     dc.b    ` (`
  1341.     date
  1342.     dc.b    `) © Buggs/DEFECT`,0
  1343.  
  1344. commoname:    dc.b    `TitleClock 1001 V`
  1345.         ver
  1346.         dc.b    0
  1347.  
  1348.  
  1349.     ifne    locale
  1350. loclib        dc.b    `locale.library`,0
  1351.     endc
  1352. commodiname:    dc.b    `commodities.library`,0
  1353. doslib:        dc.b    `dos.library`,0
  1354. intlib:        dc.b    `intuition.library`,0
  1355. utillib        dc.b    `utility.library`,0
  1356. gfxlib        dc.b    `graphics.library`,0
  1357. timer:        dc.b    `timer.device`,0
  1358. iconlib:    dc.b    `icon.library`,0
  1359.  
  1360. Argstring    dc.b    `Outputformat`,0
  1361. Gaugestring    dc.b    `Gauge`,0
  1362. Memtypestring    dc.b    `Memtype`,0
  1363. WBName    dc.b    "Workbench",0
  1364.  
  1365.     ifeq    deutsch
  1366. MyF    dc.b    `F`,0
  1367.  
  1368. Commotitle:    dc.b    `© 1994 Henryk Richter,`,0
  1369. commoaha:    dc.b    `one more Workbench Titleclock`,0
  1370.  
  1371.     ifeq    locale
  1372. myAM    dc.b    `AM`,0
  1373. myPM    dc.b    `PM`,0
  1374.  
  1375. Daynames
  1376.     dc.b    `Sunday`,0,0,0,0
  1377.     dc.b    `Monday`,0,0,0,0
  1378.     dc.b    `Tuesday`,0,0,0
  1379.     dc.b    `Wednesday`,0
  1380.     dc.b    `Thursday`,0,0
  1381.     dc.b    `Friday`,0,0,0,0
  1382.     dc.b    `Saturday`,0,0
  1383. MonthNames
  1384.     dc.b    `January`,0,0,0
  1385.     dc.b    `February`,0,0
  1386.     dc.b    `March`,0,0,0,0,0
  1387.     dc.b    `April`,0,0,0,0,0
  1388.     dc.b    `May`,0,0,0,0,0,0,0
  1389.     dc.b    `June`,0,0,0,0,0,0
  1390.     dc.b    `July`,0,0,0,0,0,0
  1391.     dc.b    `August`,0,0,0,0
  1392.     dc.b    `September`,0
  1393.     dc.b    `October`,0,0,0
  1394.     dc.b    `November`,0,0
  1395.     dc.b    `December`,0,0
  1396.     endc
  1397.  
  1398.     else
  1399.  
  1400. MyF    dc.b    `V`,0
  1401.  
  1402. Commotitle:    dc.b    `© 1994 Henryk Richter,`,0
  1403. commoaha:    dc.b    `noch eine Workbench Titeluhr`,0
  1404.  
  1405.     ifeq    locale
  1406. myAM    dc.b    `vorm.`,0
  1407. myPM    dc.b    `nachm.`,0
  1408.  
  1409. Daynames
  1410.     dc.b    `Sonntag`,0,0,0,0
  1411.     dc.b    `Montag`,0,0,0,0,0
  1412.     dc.b    `Dienstag`,0,0,0
  1413.     dc.b    `Mittwoch`,0,0,0
  1414.     dc.b    `Donnerstag`,0
  1415.     dc.b    `Freitag`,0,0,0,0
  1416.     dc.b    `Samstag`,0,0,0,0
  1417. MonthNames
  1418.     dc.b    `Januar`,0,0,0,0
  1419.     dc.b    `Februar`,0,0,0
  1420.     dc.b    `März`,0,0,0,0,0,0
  1421.     dc.b    `April`,0,0,0,0,0
  1422.     dc.b    `Mai`,0,0,0,0,0,0,0
  1423.     dc.b    `Juni`,0,0,0,0,0,0
  1424.     dc.b    `Juli`,0,0,0,0,0,0
  1425.     dc.b    `August`,0,0,0,0
  1426.     dc.b    `September`,0
  1427.     dc.b    `Oktober`,0,0,0
  1428.     dc.b    `November`,0,0
  1429.     dc.b    `Dezember`,0,0
  1430.     endc
  1431.  
  1432.     endc
  1433.  
  1434.     rsreset
  1435. mess:        rs.l    1
  1436. mylocale    rs.l    1
  1437. loc:        rs.l    1
  1438. Commobase    rs.l    1
  1439. dos        rs.l    1
  1440. dos2        rs.l    1
  1441. int        rs.l    1
  1442. util        rs.l    1
  1443. gfx        rs.l    1
  1444. IOREQ        rs.l    1
  1445. MyTimeVAL    rs.b    IOTV_Size
  1446. MyDate        rs.b    cd_size
  1447. MyPub        rs.l    1
  1448. MyAttr        rs.b    ta_sizeof
  1449. MyBitMap    rs.l    1
  1450. MyRastport    rs.b    rp_SIZEOF
  1451. MyFont        rs.l    1
  1452. LastFont    rs.l    1
  1453. LastWidth    rs.w    1
  1454. LastDepth    rs.b    1
  1455. Finalbuffer    rs.b    200+1
  1456. Argbuffer    rs.b    100
  1457. Fontname    rs.b    32
  1458. myfg        rs.b    1
  1459. mybg        rs.b    1
  1460. lasttime    rs.l    1
  1461. mysignal    rs.l    1
  1462. mytask        rs.l    1
  1463. Intset        rs.b    1
  1464. Counter        rs.b    1
  1465. iconsave    rs.l    1
  1466. msgport        rs.l    1
  1467. fehler        rs.l    1
  1468. brokerstruct    rs.l    1
  1469. inter:        rs.l    2
  1470.         rs.b    1    ;2
  1471.         rs.b    1    ;127
  1472.         rs.l    3
  1473.  
  1474.     ifne    use21
  1475. my_bitmap    rs.b    bm_sizeof
  1476. rastdepth    rs.w    1
  1477. rastwidth    rs.w    1
  1478. rastheight    rs.w    1
  1479.     endc
  1480. MyBroker:    rs.b    newbroker_sizeof
  1481. MaxWidth    rs.w    1
  1482. Enabled        rs.b    1
  1483. GaugeWidth    rs.b    1
  1484. AvailMem    rs.l    1
  1485. FreeMem        rs.l    1
  1486. SaveMEMtype    rs.l    1
  1487. xpos        rs.l    1
  1488. dataslen    rs.b    0
  1489. ;        section    1,bss
  1490. ;datas:    
  1491. ;        ds.b    dataslen
  1492.